// 对 axios 进行二次封装
import axios from "axios";
//引入进度条
import nprogress from 'nprogress'
//引入进度条样式
import 'nprogress/nprogress.css'
//start 进度条开始  done 进度条结束

//在当前模块引入store
import store from "../store";

//1. 利用axios对象的create()
const requests = axios.create({
  baseURL: '/api',
  timeout: 5000
})

//请求拦截器： 在发请求之前，请求拦截器可以监测到, 可以在请求发出去之前做一些事情
requests.interceptors.request.use((config) => {
  // 进度条开始
  nprogress.start();
  //config: 配置对象， 对象里面有一个属性非常重要,headers请求头

  if(store.state.detail.uuid_token) {
    //请求头添加字段
    config.headers.userTempId = store.state.detail.uuid_token;
  }

  //需要携带token带给服务器
  let token = store.state.user.token;
  token && (config.headers.token = token)


  return config;
}, err => {
  console.log(err)
});

//响应拦截器
requests.interceptors.response.use(res => {
  //done 进度条结束
  nprogress.done()
  //成功的回调函数： 服务器响应数据回来以后，
  return res.data

}, err => {
  console.log(err)
});

export default requests;